package cn.iocoder.yudao.module.biz.controller.admin.contract.vo;

import cn.iocoder.yudao.module.biz.dal.dataobject.contract.receive.ReceiveRecordDO;
import cn.iocoder.yudao.module.biz.dal.dataobject.contract.transformer.TransformerDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 合同档案新增/修改 Request VO")
@Data
public class ContractArchiveSaveReqVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6418")
    private Long id;

    @Schema(description = "合同名称", example = "张三")
    private String contractName;

    @Schema(description = "合同编号")
    private String contractCode;

    @Schema(description = "委托单位id", example = "27086")
    private Long customerId;

    @Schema(description = "委托单位(甲方)名称", example = "芋艿")
    private String customerName;

    @Schema(description = "签约时间")
    private LocalDateTime signTime;

    @Schema(description = "用电户号id", example = "27086")
    private String powerAccountId;

    @Schema(description = "用电户号", example = "14697")
    private String powerAccount;

    @Schema(description = "项目编码")
    private String projectCode;

    @Schema(description = "甲方负责人", example = "李四")
    private String customerDirectorName;

    @Schema(description = "联系电话")
    private String contactNumber;

    @Schema(description = "乙方负责人", example = "王五")
    private String companyDirectorName;

    @Schema(description = "管理单元id", example = "4347")
    private Long manageUnitId;

    @Schema(description = "管理单元名称", example = "王五")
    private String manageUnitName;

    @Schema(description = "客户经理")
    private String costomerManager;

    @Schema(description = "用电位置省市区")
    private Long powerLocation;

    @Schema(description = "用电地址")
    private String powerAddress;

    @Schema(description = "用电片区")
    private String powerArea;

    @Schema(description = "合同服务项目")
    private List<String> serviceContent;

    @Schema(description = "补充条款")
    private String supplement;

    @Schema(description = "变压器总数量")
    private Integer transformerAmount;

    @Schema(description = "变压器总容量")
    private Integer totalVolume;

    @Schema(description = "应安装监测表数量")
    private Integer measureAmount;

    @Schema(description = "合同开始时间")
    private LocalDateTime contractStartTime;

    @Schema(description = "合同终止时间")
    private LocalDateTime contractEndTime;

    @Schema(description = "合同服务期限")
    private Integer contractMonthNumber;

    @Schema(description = "合同服务期限大写")
    private String contractMonthText;

    @Schema(description = "月服务费")
    private BigDecimal feePerMontNumber;

    @Schema(description = "月服务费大写")
    private String feePerMontText;

    @Schema(description = "实际月服务费")
    private BigDecimal factFeePerMonthNumber;

    @Schema(description = "实际月服务费大写")
    private String factFeePerMonthText;

    @Schema(description = "合同总价")
    private BigDecimal contractPriceNumber;

    @Schema(description = "合同总价大写")
    private String contractPriceText;

    @Schema(description = "首次付款金额")
    private BigDecimal firstPay;

    @Schema(description = "首次支付时间")
    private LocalDateTime firstPayDate;

    @Schema(description = "分期期数", example = "7627")
    private Integer instalmentCount;

    @Schema(description = "分期支付收款间隔(月)")
    private Integer receiveInterval;

    @Schema(description = "每期支付金额")
    private BigDecimal intervalPay;

    @Schema(description = "服务单元id", example = "21217")
    private Long serviceUnitId;

    @Schema(description = "服务单元名称", example = "芋艿")
    private String serviceUnitName;

    @Schema(description = "服务经理", example = "芋艿")
    private String serviceManagerName;

    @Schema(description = "介绍人")
    private String introducer;

    @Schema(description = "介绍渠道")
    private String introduceChannel;

    @Schema(description = "备注", example = "随便")
    private String remark;

    @Schema(description = "附件", example = "https://www.iocoder.cn")
    private String attachmentUrl;

    @Schema(description = "负责人id", example = "13519")
    private Long ownerUserId;

    @Schema(description = "合同状态", example = "1")
    private String status;

    @Schema(description = "试用", example = "1")
    private String isTest;

    @Schema(description = "合同类型", example = "1")
    private String contractType;

    @Schema(description = "合同上交时间")
    private LocalDateTime contractSubmitTime;

    @Schema(description = "合同归档时间")
    private LocalDateTime contractCompleteTime;

    @Schema(description = "变压器列表")
    private List<TransformerDO> transformerList;

    @Schema(description = "接收记录列表")
    private List<ReceiveRecordDO> receiveRecordList;

    @Schema(description = "是否续期", example = "1")
    private String isRenew;

    @Schema(description = "原始合同id", example = "1")
    private Long originalContractId;

    @Schema(description = "审核失败原因")
    private String auditFailedReason;

    @Schema(description = "审核人id", example = "1")
    private Long auditorId;

}